package Testes;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import DAO.DisciplinaDaoImplArquivo;
import Pojo.Disciplina;
import Pojo.Turma;



public class DisciplinaDaoImplArquivoTest {
	
	@Test
	public void insercaoNaListaDaCerto() throws Exception{
		DisciplinaDaoImplArquivo disciplinaDao =  new DisciplinaDaoImplArquivo();
		Disciplina disciplina = new Disciplina(9,"POO","ementa-ementa",72);
		assertEquals(true, disciplinaDao.adicionarDisciplina(disciplina));
	}
	
	@Test
	public void insercaoNaListaDuplicadoDaErrado() throws Exception{
		Disciplina disciplina = new Disciplina(1,"POO","ementa-ementa",72);
		DisciplinaDaoImplArquivo disciplinaDao = new DisciplinaDaoImplArquivo();
		disciplinaDao.adicionarDisciplina(disciplina);
		assertEquals(false, disciplinaDao.adicionarDisciplina(disciplina));
	}
	
	@Test
	public void insercaoNaListaMesmoIdDaErrado() throws Exception{
		Disciplina disciplina = new Disciplina(1,"POO","ementa-ementa",72);
		DisciplinaDaoImplArquivo disciplinaDao = new DisciplinaDaoImplArquivo();
		disciplinaDao.adicionarDisciplina(disciplina);
		disciplina = new Disciplina(1,"aoc","ementa-ementa",72);
		assertEquals(false, disciplinaDao.adicionarDisciplina(disciplina));
	}

	@Test
	public void remocaoNaListaDaCerto() throws Exception{
		DisciplinaDaoImplArquivo disciplinaDao = new DisciplinaDaoImplArquivo();
		Disciplina disciplina = new Disciplina(9,"POO","ementa-ementa",72);
		assertEquals(true,disciplinaDao.removerDisciplina(disciplina));
	}
	
	@Test
	public void remocaoDeDisciplinaQueNaoExisteDaErrado() throws Exception{
		Disciplina disciplina = new Disciplina(4,"aeds","ementa-ementa",72);
		DisciplinaDaoImplArquivo disciplinaDao = new DisciplinaDaoImplArquivo();
		disciplinaDao.adicionarDisciplina(disciplina);
		disciplina = new Disciplina(4,"POO","ementa-ementa",72);
		disciplinaDao.adicionarDisciplina(disciplina);
		disciplina = new Disciplina(4,"teste","ementa-ementa",72);
		assertEquals(false,disciplinaDao.removerDisciplina(disciplina));
	}
	
	@Test
	public void procurarPalavraPorNomeNaListaDaCerto() throws Exception{
		DisciplinaDaoImplArquivo disciplinaDao = new DisciplinaDaoImplArquivo();
		Disciplina disciplina2 = new Disciplina(4,"POO","ementa-ementa",72);
		disciplinaDao.adicionarDisciplina(disciplina2);
		List<Disciplina> lista = disciplinaDao.procurarPorNome("POO");
		assertNotSame(0, lista.size());
	}
	
	@Test
	public void procurarPalavraPorNomeNaListaDaErrado() throws Exception{
		DisciplinaDaoImplArquivo disciplinaDao = new DisciplinaDaoImplArquivo();
		Disciplina disciplina2 = new Disciplina(4,"POO","ementa-ementa",72);
		disciplinaDao.adicionarDisciplina(disciplina2);
		List<Disciplina> lista = disciplinaDao.procurarPorNome("RAP");
		assertEquals(0, lista.size());
	}
	
}
